Managing gesture input information

ABSTRACT

Techniques for managing screen input information associated with configurable gestures may be provided. For example, configuration information associated with a performable gesture and an operation may be received from an application. An association between the gesture, the operation and the application may be stored such that the operation is performed when the gesture is detected as having been performed. The operation may be global or application-specific. In some embodiments, a user is able to update a particular association. For example, the user may update a gesture associated with an operation, or the user may update an operation associated with a particular gesture.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.13/856,644, filed Apr. 4, 2013, and issued as U.S. Pat. No. 9,063,576 onJun. 23, 2015, entitled “MANAGING GESTURE INPUT INFORMATION,” thecontent of which is hereby incorporated by reference in its entirety.

BACKGROUND

As mobile devices become more widespread and advanced, more and moreusers turn to them for enabling a multitude of different functions,features, and/or software applications. For example, mobile devices havebecome both location and context aware. Thus, they may be configured todetect a geographic location as well as other pertinent contextualinformation that may aid in the software application functionality beingimplemented. Additionally, as more and more features are enabled,consumers and developers alike are hoping that mobile devices maysupplant desktop and/or laptop computers or at least be comparable froma feature availability standpoint. However, many mobile devices stillface challenges that keep them from rivaling more standard desktopand/or laptop computing systems, at least in part because non-mobiledevices tend to be configured with one or more peripheral devices thatmobile devices lack. As such, managing screen input information as wellother data that may generally be provided by desktop and/or laptopperipherals may pose challenges to the user device consumers as well asthe developers.

BRIEF DESCRIPTION OF THE DRAWINGS

Various embodiments in accordance with the present disclosure will bedescribed with reference to the drawings, in which:

FIG. 1 illustrates an example block diagram for describing themanagement of screen input information described herein, according to atleast one example;

FIG. 2 illustrates an example architecture for implementing themanagement of screen input information described herein that includes atleast one user device and/or one or more service provider computersconnected via one or more networks, according to at least one example;

FIG. 3 illustrates an example flow diagram for describing the managementof screen input information described herein, according to at least oneexample;

FIG. 4 illustrates an example block diagram for describing themanagement of screen input information described herein, according to atleast one example;

FIG. 5 illustrates another example block diagram for describing themanagement of screen input information described herein, according to atleast one example;

FIG. 6 illustrates an example flow diagram of a process for describingimplementation of the management of screen input information describedherein, according to at least one example;

FIG. 7 illustrates an example flow diagram of a process for describingimplementation of the management of screen input information describedherein, according to at least one example;

FIG. 8 illustrates an example flow diagram of a process for describingimplementation of the management of screen input information describedherein, according to at least one example; and

FIG. 9 illustrates an environment in which various embodiments of themanagement of screen input information described herein can beimplemented, according to at least one example.

DETAILED DESCRIPTION

In the following description, various embodiments will be described. Forpurposes of explanation, specific configurations and details are setforth in order to provide a thorough understanding of the embodiments.However, it will also be apparent to one skilled in the art that theembodiments may be practiced without the specific details. Furthermore,well-known features may be omitted or simplified in order not to obscurethe embodiment being described.

Embodiments of the present disclosure are directed to, among otherthings, managing device input information. In some examples, deviceinput information may be identified as a gesture performed on a screenor other surface of a device (e.g., any touch-sensitive or touch-capablesurface). The device may include a screen (e.g., a touch screen), andthe gesture may be detected by the screen. However, in other examples,the gesture may be detected without contact being made with the deviceor by a surface of the device other than the screen. In some examples,utilizing gestures on a device may enable the freeing up of screen realestate, and reducing clutter on the screen. Additionally, a performablegesture may include any gesture that the device is configured to detect.Once performed, the performable gesture may be described as a performedgesture. Further, in some examples, any number of performable gesturesmay be created, defined, configured, and/or deleted. For example, acollection or list of performable gestures may be defined and/orregistered with an operating system including, but not limited to, aquestion mark gesture, one or more swipes (e.g., in any direction orcombination of directions), a letter shape, a geometric shape, etc. Insome examples the performable gesture may be performed by a user or anobject (e.g., a hand or finger, a stylus, or any other object accessibleby a user to perform the performable gestures). Gestures may beperformed with one or more objects (e.g., two fingers may indicate a“pause” operation and/or one or more separation motions (e.g., a“question mark” may be drawn by a curved line followed by a singlecontact with the screen). Further, gestures may be defined thatassociate symbols that don't generally have known meanings withoperations (e.g., a “curly” shape may open a gaming applicationassociated with “pigs” or the like).

In some examples, gestures may be assigned to or otherwise associatedwith one or more global operations (e.g., an operation performed by anoperating system (OS) of the device or an operation that otherwiseperforms a function or action independent of particular softwareapplications (e.g., a web browser, a media content player, a mappingapplication, etc.). Yet, in other examples, the gestures may be assignedto or otherwise associated with one or more application-specificfunctions or actions. Global operations may include, but are not limitedto, opening a help file (or other file of the device), launching asoftware application, closing a software application, searching thedevice for documents and/or applications, or other device operations maybe independent of any particular functionality of an application.Alternatively, or in addition, application-specific operations mayinclude, but are not limited to, navigating from one page of anapplication to another (e.g., within a web browser or readingapplication), playing a media file, pausing a media file, skippingwithin tracks of media, navigating through selections or otheroperations that may be more specific to an application. Further, in someexamples, the utilization of the performable and/or configurablegestures may enable the operating system and/or software applications tofree up screen real estate of the device by reducing the screen spaceused for certain buttons, icons, and/or links. In other words, thebuttons, icons, and/or links of a device's screens may effectively bereplaced by one or more gestures.

Additionally, in some examples, an application may register one or moreperformable gestures with an OS service (e.g., an interruption handleror other service configured to receive user input and provideinformation to the applications in response to the input). In this way,a registry file may be built, updated, or otherwise modified to includea list, set, or other grouping of performable gestures appropriate foreach application. The registry (also referred to as registration)information may associate certain performable gestures with certainoperations and/or actions that the applications may be configured toperform. In this way, each application may define its own set ofgestures that it is configured to understand. Additionally, theapplications may provide configurable gesture information (e.g.,registration information that indicates that the gesture may beconfigured by a user and/or by the OS) for the registry. As such, theconfigurable gesture information may indicate one or more operationsthat can be performed based on a user-generated or user-configuredgesture. For example, a podcast application may provide configurablegesture information for one or more of the user interface (UI) elementsof the podcast application. Once configured for utilization, the OSand/or the application may remove the UI elements from the UI, thus,freeing up screen real estate of the podcast application for otherinformation and/or elements. As used herein, a UI element may includeany item, picture, icon, link, or other button of a UI that may beselected or otherwise activated by a user to perform or request anaction be performed by the application and/or device.

Further, global gestures may also be configured by a user of a device.As such, a user may be able to set or update one or more gestures toperform one or more global operations. In some examples, a user mayassign a particular gesture (e.g., drawing an “e” or “E” on the screen)to a particular operation (e.g., opening an electronic mail (email)application). Alternatively, or in addition, a user may assign othergestures to the same operation (e.g., all of “e,” “E,” and/or “□”gestures may be assigned to opening an email application. Additionally,a gesture may be made up of a single motion or a combination of motions(e.g., as noted above, a “?” gesture may be performed by drawing thecurved portion alone or by drawing the curved portion followed bydrawing the associated period). Additionally, in some examples, asdescribed briefly above, a handler or other OS service may be configuredto receive and/or identify the performed gestures while an applicationis running, as well as make appropriate determinations and/or provideappropriate information in the background. Further, in some examples,changes to a UI may be made automatically and/or dynamically by the OSand/or the application based at least in part on configurations and/orchanges made to the registration information and/or the configurablegesture information.

FIG. 1 depicts an illustrative user device 100 such as, but not limitedto, a mobile phone, a tablet, an e-book reader, an mp3 player, a remotecontrol, or any other computing device that may be configured toimplement the techniques described herein. For example, the user device100 may be configured to manage screen input information including, butnot limited to, motion, heat, conduction, etc., either external to atouch screen display 102 (e.g., independent of contact with the touchscreen display 102), internal to the device 100 (e.g., based at least inpart on a button or other actuator being pushed to complete anelectrical circuit within the housing of the device 100), and/ordirectly on the touch screen display 102 (e.g., via the common method ofselecting GUI icons on a display screen). As such, the input informationmay be any type of data collected by a sensor of the device 100 andstored, processed, or otherwise managed by the device 100 or a webservice, web site, and/or other network resource in communication withthe device 100 (e.g., via a wired or wireless network). As shown in FIG.1, in some examples, the device 100 may include the touch screen display102. Motion or presence of an object 104 (e.g., a finger of a user) maybe detected when the object comes into contact with the touch screendisplay 102, moves on the touch screen display 102, and/or pauses on thetouch screen display 102. Speed and direction of an object may bedetected by correlating relative contact between one or more differentlocations on the touch screen display 102. Multiple objects 104 (e.g.,two or more fingers, etc.) may be detected as well. As such, a gesturemay be configured as any combination of one or more contact pointsand/or one or more performed motions. As used herein, when a userperforms a gesture 106, the gesture 106 and/or motion may be describedas “drawn” (e.g., a user may “draw” a question mark shape as at leastone example of a gesture).

As illustrated in FIG. 1, in some examples, the touch screen display 102may be configured to provide, render, or otherwise display one or moreUI elements 108(1)-(N) (e.g., a hyper link, an icon that represents alink to electronically stored content, a link or icon that representscontent or an application local to the device 100, or the like).Alternatively, or in addition, the display 102 may be configured toprovide a UI for a specific application or for the OS (e.g., a homescreen or the like). For example, the display 102 may render a homescreen of the user with icons or other UI elements that indicatesoftware applications or widgets that may be activated by the user.Additionally, in some aspects, a user may perform the gesture 106 on thedisplay 102. For example, the user may place his or her finger (or anyother object 104) at a location F1 that corresponds to a first locationon the display 102. The user may then draw a shape, letter, or otherdesign (e.g., a manifestation of the gesture) on the display 102. Forexample, in FIG. 1, the user has drawn a question mark (“?”) (e.g., withthe period) by starting at location F1, drawing the shape (here, thequestion mark shape), and finishing the gesture 106 at either locationF2 or location FN (e.g., by picking up the object 104 at F2, and tappingat FN).

In some examples, once a user has performed a gesture 106, the device100 may be configured to perform one or more operations. An operationmay include any combination of actions and/or instructions to beperformed by one or more processors of the device 100 in conjunctionwith at least one or more storage locations of the device 100.Operations may include launching an application, opening a document,providing pass-through information to an application, or the like. Forexample, and without limitation, upon receipt of input information thatindicates that the performed gesture 106 was the question mark shape(e.g., received by an OS handler and/or from the display 102), thedevice 100 may launch or otherwise open a global (otherwise referred toas “device-specific”) help document, file, and/or application. In thisway, the OS may be configured to interrupt whatever other operations arebeing performed and/or whatever UI elements 108 are being rendered toprovide the help information. In some examples, the question mark may beassigned to the operation of providing the global help informationregardless of the focus of the UI. For example, even if an applicationis open (e.g., a web browser), drawing the question mark gesture 106 mayactivate the global help information as opposed to application-specifichelp information. However, in other examples, the focus of the UI maycontrol, where drawing the question mark gesture 106 while anapplication has the focus may activate application-specific helpinformation. As desired, this may be configured by a user, the device,the application, and/or a software developer. As such, a user may havesome control of the implementation of the gestures 106. Defaultoperations and/or gesture-operation associations may also be provided.

FIG. 2 depicts an illustrative system or architecture 200 in whichtechniques for managing screen input information may be implemented. Inarchitecture 200, one or more users 202 (e.g., device owners, accountholders, etc.) may utilize the user computing device 100 to access localapplications (e.g., stored and/or executable by the user device 100), aweb service application 206, a user account accessible through the webservice application 206, or a web site or other network resource via oneor more networks 208. In some aspects, the web service application 206,web site, and/or user account may be hosted, managed, and/or otherwiseprovided by a computing resources service or service provider, such asby utilizing one or more service provider computers 210. The one or moreservice provider computers 210 may, in some examples, provide computingresources such as, but not limited, applications for purchase and/ordownload, web sites, web hosting, client entities, data storage, dataaccess, management, virtualization, etc. The one or more serviceprovider computers 210 may also be operable to provide web hosting,computer application development, and/or implementation platforms,combinations of the foregoing, or the like to the one or more users 202.

In some examples, the networks 208 may include any one or a combinationof many different types of networks, such as cable networks, theInternet, wireless networks, cellular networks, and other private and/orpublic networks. While the illustrated example represents the users 202accessing the web service application 206 over the networks 208, thedescribed techniques may equally apply in instances where the users 202interact with a service provider computer 210 via the user device 100over a landline phone, via a kiosk, or in any other manner. It is alsonoted that the described techniques may apply in other client/serverarrangements (e.g., set-top boxes, etc.), as well as innon-client/server arrangements (e.g., locally stored applications,peer-to-peer systems, etc.).

As described briefly above, the web service application 206 may allowthe users 202 to interact with a service provider computer 210, such asto store, access, and/or manage data, develop and/or deploy computerapplications, and/or host web content. The one or more service providercomputers 210, perhaps arranged in a cluster of servers or as a serverfarm, may host the web service application 206. These servers may beconfigured to host a website (or combination of websites) viewable viathe user device 100 or a web browser accessible by a user 202. Otherserver architectures may also be used to host the web serviceapplication 206.

The web service application 206 may be capable of handling requests frommany users 202 and serving, in response, various user interfaces thatcan be rendered at the user device 100 such as, but not limited to, aweb site. The web service application 206 can interact with any type ofwebsite that supports user interaction, including social networkingsites, electronic retailers, informational sites, blog sites, searchengine sites, news and entertainment sites, and so forth. As discussedabove, the described techniques can similarly be implemented outside ofthe web service application 206, such as with other applications runningon the user device 100.

The service provider computers 210 may be any type of computing devicesuch as, but not limited to, a mobile phone, a smart phone, a personaldigital assistant (PDA), a laptop computer, a desktop computer, a servercomputer, a thin-client device, a tablet PC, etc. Additionally, itshould be noted that in some embodiments, the service provider computers210 may be executed by one more virtual machines implemented in a hostedcomputing environment. The hosted computing environment may include oneor more rapidly provisioned and released computing resources, whichcomputing resources may include computing, networking, and/or storagedevices. A hosted computing environment may also be referred to as acloud computing environment. In some examples, the service providercomputers 210 may be in communication with the user device 100 via thenetworks 208, or via other network connections. The service providercomputers 210 may include one or more servers, perhaps arranged in acluster, or as individual servers not associated with one another.

In one illustrative configuration, the service provider computers 210may include at least one memory 214 and one or more processing units (orprocessor(s)) 215. The processor(s) 215 may be implemented asappropriate in hardware, computer-executable instructions, firmware, orcombinations thereof. Computer-executable instruction or firmwareimplementations of the processor(s) 215 may include computer-executableor machine-executable instructions written in any suitable programminglanguage to perform the various functions described.

The memory 214 may store program instructions that are loadable andexecutable on the processor(s) 215, as well as data generated during theexecution of these programs. Depending on the configuration and type ofservice provider computers 210, the memory 214 may be volatile (such asrandom access memory (RAM)) and/or non-volatile (such as read-onlymemory (ROM), flash memory, etc.). The service provider computers 210may also include additional removable storage and/or non-removablestorage including, but not limited to, magnetic storage, optical disks,and/or tape storage. The disk drives and their associatedcomputer-readable media may provide non-volatile storage ofcomputer-readable instructions, data structures, program modules, andother data for the computing devices. In some implementations, thememory 214 may include multiple different types of memory, such asstatic random access memory (SRAM), dynamic random access memory (DRAM),or ROM. Turning to the contents of the memory 214 in more detail, thememory 214 may include an operating system and one or more applicationprograms or services for implementing the features disclosed hereinincluding at least the web service application 206.

In some examples, the user device 100 may also be any type of computingdevice such as, but not limited to, an e-book reader, a mobile phone, asmart phone, a personal digital assistant (PDA), a laptop computer, athin-client device, a tablet PC, etc. In some examples, the user device100 may be in communication with the service provider computers 210 viathe networks 208, or via other network connections.

In one illustrative configuration, the user device 100 may include atleast one memory 218 and one or more processing units (or processor(s))224. The processor(s) 224 may be implemented as appropriate in hardware,computer-executable instructions, firmware, or combinations thereof.Computer-executable instruction or firmware implementations of theprocessor(s) 224 may include computer-executable or machine-executableinstructions written in any suitable programming language to perform thevarious functions described.

The memory 218 may store program instructions that are loadable andexecutable on the processor(s) 224, as well as data generated during theexecution of these programs. Depending on the configuration and type ofuser device 100, the memory 218 may be volatile (such as random accessmemory (RAM)) and/or non-volatile (such as read-only memory (ROM), flashmemory, etc.). The user device 100 may also include additional storage226, which may include removable storage and/or non-removable storage.The additional storage 226 may include, but is not limited to, magneticstorage, optical disks, and/or tape storage. The disk drives and theirassociated computer-readable media may provide non-volatile storage ofcomputer-readable instructions, data structures, program modules, andother data for the computing devices. In some implementations, thememory 218 may include multiple different types of memory, such asstatic random access memory (SRAM), dynamic random access memory (DRAM),or ROM.

The memory 218 and the additional storage 226, both removable andnon-removable, are examples of computer-readable storage media. Forexample, computer-readable storage media may include volatile ornon-volatile, removable, or non-removable media implemented in anymethod or technology for storage of information such ascomputer-readable instructions, data structures, program modules, orother data. As used herein, modules may refer to programming modulesexecuted by computing systems (e.g., processors) that are part of theuser device 100 or the service provider computers 210. The memory 218and the additional storage 226 are all examples of computer storagemedia. The user device 100 may also contain communications connection(s)228 that allow the user device 100 to communicate with a storeddatabase, another computing device or server, user terminals, and/orother devices on the networks 208. The user device 100 may also includeinput/output (I/O) device(s) and/or ports 230, such as for enablingconnection with a keyboard, a mouse, a pen, a voice input device, atouch input device, a display, speakers, a printer, etc.

Turning to the contents of the memory 218 in more detail, the memory 218may include an operating system 232 and the one or more applicationprograms or services for implementing the features disclosed hereinincluding a gesture management module 234, a gesture configurationmodule 236, an gesture registration module 238, an input collectionmodule 240, and/or a user interface module 242. Additionally, in someexamples, as noted above, the OS 232 may be configured with a handler(e.g., an event handler, an interrupt handler, or the like), forinterrupting regular operations of the device 100 to perform alternativeoperations (e.g., launching a new application, overriding otheroperations, etc.). The handler may, in some examples, be configured toreceive the gesture information (e.g., from the gesture managementmodule 234 and/or the input collection module 240) and perform one ormore operations (e.g., at the OS level) based at least in part on thereceived gesture information. Additionally, in some examples, thehandler may be configured to execute or otherwise manage one or more (orvarious combinations) of the modules 234, 236, 238, 240, 242, asappropriate. The gesture management module 234 may be configured tomanage the one or more gestures. For example, both configurable gesturesand default gestures may be associated or otherwise linked with one ormore operations to be performed. The associations between gestures andoperations may, in some aspects, be stored in one or more storagelocations such as, but not limited to, the memory 218, a database, orother storage location of the device (or remote location). As such, thegesture management module 234 may be configured to store theassociations and/or retrieve operations based at least in part onidentified gestures (e.g., that have been performed). Further, in someexamples, when a gesture is configured (e.g., by a user), the gesturemanagement module 234 may be responsible for updating or otherwisemodifying the gesture-operation association information.

In some aspects, the gesture configuration module 236 may be configuredto manage or otherwise provide gesture configuration capabilitiesassociated with the device. As noted above, both global andapplication-specific gestures may be configured, reconfigured, and/ordefault associations may be accepted. As such, the gesture configurationmodule 236 may be configured to provide a configuration UI for enablingusers 202 to create new gesture definitions, modify current gesturedefinitions, and/or accept default the gesture definitions. As usedherein, a gesture definition may include a gesture (e.g., anycombination of contacts or motions on the screen of the device 100), anassociated operation (e.g., launch application, open help document, skipto the next song, etc.), and/or an indication of whether the gesture isglobal or application specific. Additionally, in some examples, thegesture configuration module 236 may be configured to provide twodifferent configuration UIs, one within the OS settings and one withinthe application settings of each applications. However, in someexamples, even the application-specific gesture configurations may beconfigured via the OS settings UI.

In some examples, the gesture registration module 238 may be configuredto enable applications of the device 100 to register default, locked,and/or configurable gestures to be associated with the application. Insome examples, the registration step may be part of installing theapplication on the device 100 (e.g., installing the application with theOS 232). Additionally, in some examples, a default gesture may includeany gestures that are provided by the application with defaultdefinitions or associations. These default gestures may be locked orconfigurable. Locked gestures, in some examples, may include gesturesthat cannot be configured or otherwise changed by a user or otherentity. Alternatively, configurable gestures may be changed, updated,modified, or otherwise configured by others. Further, in some examples,an application may register one or more blank gestures that can be fullyconfigured by a user without having started as a default. For example, adefault gesture that is configurable may include a swipe forwardsgesture of a media player that is configurable such that a user 202 maychange the operation from skip forwards to fast forward. Alternatively,a blank gesture may enable the user to define an entirely new gesture(e.g., a shape or motion that is not already assigned to any operation),and then provide an operation assignment for that gesture.

Additionally, in some aspects, the input collection module 240 may beconfigured to receive input (e.g., performed gestures) from the displaydevice or other input area of the device (e.g., a gesture area may bedefined that is separate from the display device). The input collectionmodule 240 may also be configured to provide the performed gestureinformation (e.g., including location information, speed information,number of contact points, etc.) to the gesture management module 234and/or the handler of the OS 232. Further, in some examples, the userinterface module 242 may be configured to provide the UI and/or UIelements (including links, icons, applications, buttons, etc.). In someexamples, the user interface module 242 may also be configured toindicate via a UI notification that a performed gesture was received,accepted, or denied. Further, in some examples, the user interfacemodule 242 may be configured to automatically modify UI elements of thedevice such that elements may be removed (e.g., freeing up screen realestate) once a gesture has been defined and/or configured to activatethe same operation associated with the elements being removed.

Additional types of computer storage media that may be present in theuser device 100 may include, but are not limited to, programmable randomaccess memory (PRAM), SRAM, DRAM, RAM, ROM, electrically erasableprogrammable read-only memory (EEPROM), flash memory or other memorytechnology, compact disc read-only memory (CD-ROM), digital versatilediscs (DVD) or other optical storage, magnetic cassettes, magnetic tape,magnetic disk storage or other magnetic storage devices, or any othermedium which can be used to store the desired information and which canbe accessed by the user device 100. Combinations of any of the aboveshould also be included within the scope of computer-readable media.

Alternatively, computer-readable communication media may includecomputer-readable instructions, program modules, or other datatransmitted within a data signal, such as a carrier wave, or othertransmission. However, as used herein, computer-readable storage mediadoes not include computer-readable communication media.

A few additional examples of the operations of the user device 100 arealso described in greater detail below with reference to at least FIGS.3-9.

FIG. 3 depicts an illustrative flow 300 with which techniques formanaging screen input information may be described. In illustrative flow300, operations may be performed by one or more processors 224 of thedevice 100 described with reference to at least FIGS. 1 and 2.Additionally, instructions for performing the operations may be storedin one or more memories 218 of the device 100. As desired, the flow 300may begin at 302, where the device 100 may receive a gesture (e.g.,performed on the display screen 102) from a user 202. In at least onenon-limiting example, the user 202 may perform a gesture in the shape ofthe letter “M” by at least starting the gesture at F1 and ending at ornear F2. As shown in FIG. 3, the UI of the device 100 is displaying ahome screen 304 that may include one or more images, icons 206, and/orlinks 308. As desired, and as described above, any type of shape may begestured or drawn on the device 100 to activate one or more operationsof the device 100. Here, the example illustrates some details associatedwith performing an “M” gesture; however, any number and/or type of othergesture-operation combinations are envisioned and should be understoodby one skilled in the art.

In some examples, at 310 of the flow 300, the device 100 may determinean appropriate operation to be performed based at least in part onreceived gesture. For example, the device 100 may retrieve gestureinformation from a storage device 312 and/or query a database. Thestorage device 312 or database may be local to the device 100 or may beaccessible via one or more networks as described above (e.g., hosted bythe service provider computers 210 of FIG. 2. As such, determining anappropriate operation to be performed may include looking upgesture-operation combinations, associations, and/or definitions.Additionally, determining the appropriate operation to be performed mayalso include performing logic, analyzing configuration information,and/or determining whether the operation is to be performed by the OS(e.g., when the operation is a global operation) or by the application(e.g., when the operation is an application-specific operation).Further, in some examples, at 314 of the flow 300, the device 100 mayperform the operation. As noted, in some examples, the operation mayinclude providing (e.g., passing through) information to an applicationthat enables the application to perform the appropriate operation (e.g.,when the operation is application-specific). However, in the specific,non-limiting example of FIG. 3, the device 100 is configured to launch amap application 316 in response to the “M” gesture. As noted above, thismay be a default gesture of the OS, it may be a locked gesture (suchthat it cannot be changed), and/or it may be a configured gesture (e.g.,the user 202 may have configured the “M” gesture to launch the mapapplication 316 or the user 202 may have recorded the “M” gesture andthen assigned to that gesture an operation that launches the mapapplication 316). For illustrative purposes, this may be an example of aglobal gesture, as the OS would likely launch the map application 316,as opposed to another application launching the map application 316.

FIG. 4 depicts an example block diagram 400 for describing additionaltechniques and/or features for managing screen input information, asdescribed herein. In some examples, as discussed above, the display 102of the device may be configured to render a UI associated with one ormore applications including, but not limited to, a media application 402(e.g., configured to play music, videos, podcasts, or the like), a webbrowser, a map application (e.g., the map application 308 of FIG. 3), ahome screen (e.g., the UI of the OS), or the like. In some examples, themedia application 402 may include a media window 404 that may beconfigured to provide application-specific content of the mediaapplication 402. Additionally, the device 100 may also be configured toidentify, process, and/or respond to one or more gestures. For example,in another non-limiting example, a user 202 may draw a straight linefrom F1 to FN (otherwise known as a “swipe” gesture). In other examples,the “swipe” gesture may end before FN; however, the device 100 may stillbe able to identify the gesture. Using the media application 402 as anexample, the forward swipe from F1 to FN may indicate to the OS 232 thatthe media application 402 should perform a skip track operation. Assuch, the OS 232 may provide information to the media application 402that the user 202 has requested a track forward operation; thus,enabling the media application 402 to perform the skip forwardoperation. While the swipe gesture is illustrated here being performedat the lower portion of the display 102, the gesture may be performedand/or configured to be performed anywhere on the display 102 and/or inany direction, as desired.

FIG. 5 depicts an example block diagram 500 for describing additionaltechniques and/or features for managing screen input information, asdescribed herein. In this non-limiting example, details of how screenreal estate may be saved or otherwise recovered by utilizing theconfigurable gesture techniques described herein. For example, thedevice 100 may be configured, in some aspects, to provide a mediaapplication 502 (much like the media application 402). In this example,the media application 502 may include a media window 504 (e.g., fordisplaying content of the media application 502) and one or more mediacontrols 506. Additionally, in some examples, the media controls 506 maybe provided before gesture confirmation 508. Further, in some examples,a user may configure one or more gestures such that some of the mediacontrols 506 are no longer needed on the display 102. For example, a setof gestures may be defined or otherwise configured to provide each of“rewind,” “pause,” “stop,” and “fast forward” operations, respectively.As such, providing all of the media controls 506 within the mediaapplication 502 may be redundant as these operations can now beperformed using the defined and/or configured gestures. As such, in someexamples, after gesture configuration 510, the media controls 512 of themedia application 502 may only include the “play” button because agesture was not configured for play. Additionally, in some examples, themodification of the media application 502 UI may be performedautomatically based at least in part on the configuration of thegestures and/or may be hard-coded by the application developers suchthat certain UI elements will disappear and some will remain uponconfiguration.

FIGS. 6-8 illustrate example flow diagrams showing respective processes600, 700, 800 for providing screen input information management,according to at least a few examples. These processes are illustrated aslogical flow diagrams, each operation of which represents a sequence ofoperations that can be implemented in hardware, computer instructions,or a combination thereof. In the context of computer instructions, theoperations represent computer-executable instructions stored on one ormore computer-readable storage media that, when executed by one or moreprocessors, perform the recited operations. Generally,computer-executable instructions include routines, programs, objects,components, data structures and the like that perform particularfunctions or implement particular data types. The order in which theoperations are described is not intended to be construed as alimitation, and any number of the described operations can be combinedin any order and/or in parallel to implement the processes.

Additionally, some, any, or all of the processes may be performed underthe control of one or more computer systems configured with executableinstructions and may be implemented as code (e.g., executableinstructions, one or more computer programs, or one or moreapplications) executing collectively on one or more processors, byhardware, or combinations thereof. As noted above, the code may bestored on a computer-readable storage medium, for example, in the formof a computer program comprising a plurality of instructions executableby one or more processors. The computer-readable storage medium may benon-transitory.

In some examples, the one or more screen input information managementdevices 100 (e.g., utilizing at least one of a handler of the OS 232,the gesture management module 234, the gesture configuration module 236,and/or the gesture registration module 238) shown in FIG. 2 may performthe process 600 of FIG. 6. The process 600 may begin at 602 by includingreceipt of configurable information associated with a performablegesture. In some examples, the configurable information may beconfiguration information that may be modified by a user or otherentity. The configurable information may be received by a handler of anOS and may be received from either a user or an application.Additionally, the configurable information may enable changes to be madeto gesture definitions and/or gesture-operation associations. In someexamples, at 604, the process 600 may also include receiving informationassociated with input detected by the device. This information mayidentify a gesture that was performed by a user on the screen.Additionally, the process 600 may include determining a device operationto perform at 606. The device operation may be an OS instruction toperform (e.g., launch an application or the like) or it may be aninstruction to provide information to an application (e.g., when anapplication-specific operation is to be performed). Additionally, thedetermination may be based at least in part on the received input and/orthe configuration information. In some examples, the process 600 may endat 608 where the process may include performing the device operation.

FIG. 7 illustrates an example flow diagram showing process 700 forproviding screen input information management, according to at least afew examples. The one or more screen input information managementdevices 100 (e.g., utilizing at least one of a handler of the OS 232,the gesture management module 234, the gesture configuration module 236,and/or the gesture registration module 238) shown in FIG. 2 may performthe process 700 of FIG. 7. The process 700 may begin at 702 by includingreceipt of registration information associated with a configurablegesture performable on a device (e.g., on a screen of the device). Insome examples, the registration information may include configurationsettings as well as registry information generally provided when anapplication is installed. The registration information may also includespecific gesture information that may identify what gestures theapplication may expect and/or what gestures the application isconfigured to handle. At 704, the process 700 may include configuringthe OS (or a handler of the OS) to interact with the application (e.g.,the application that provided the registration information) based atleast in part on the registration information. The configuration mayinclude updating or otherwise modifying the registry of the device.

In some examples, the process 700 may also include receiving input of aconfigurable gesture at 706. The input may identify the configurablegesture that was performed as well as other related informationincluding, but not limited to, speed of the gesture, location of thegesture, size of the gesture, etc. This information may be included inmaking a determination as to what operations to perform (e.g., similargestures performed at different speeds or on different locations of thedevice may activate different operations). At 708, the process 700 mayinclude determining an operation to be performed based at least in parton the registration information and/or the received input (e.g., thegesture information). At 710, the process 700 may include determiningwhen the operation is to be performed by the application or the OS. Forexample, and as noted above, some operations are global while others areapplication-specific. As such, if the operation is global, the process700 may determine that the OS should perform the operation.Alternatively, if the operation is application-specific, the process 700may determine that the application should perform the operation. At 712,the process 700 may also include providing the information thatidentifies the determined operation. As noted above, this informationmay be provided to either the application or the OS (e.g., from thehandler). The determination of which entity is to receive theinformation may be based at least in part on the determination of whichentity is to perform the operation. Further, in some examples, theprocess 700 may end at 714 where the process 700 may include enablingperformance of the determined operation. This may entail performing theoperation (e.g., by the OS) or making it possible for the application toperform the operation.

FIG. 8 illustrates an example flow diagram showing process 800 forproviding screen input information management, according to at least afew examples. The one or more screen input information managementdevices 100 (e.g., utilizing at least one of a handler of the OS 232,the gesture management module 234, the gesture configuration module 236,and/or the gesture registration module 238) shown in FIG. 2 may performthe process 800 of FIG. 8. The process 800 may begin at 802 by includingreceipt of configuration information associated with a performablegesture. At 804, the process 800 may also include receiving informationassociated with input detected by the device. The input may include anindication of a gesture that was performed on the device (e.g., by auser). Additionally, in some examples, the process 800 may includeperforming an operation of the device when information associated withthe input identifies a gesture at 806. In some examples, a determinationof whether the input identifies a gesture may be based at least in parton whether the gesture has been registered, defined, and/or configuredwith the device and/or an OS handler of the device. Further, the process800 may end at 808 where the process 800 may include enabling anapplication to execute instructions to perform an application-specificoperation based at least in part on an indication that the receivedinput identifies a performed gesture.

Illustrative methods and systems for managing screen input informationare described above. Some or all of these systems and methods may, butneed not, be implemented at least partially by architectures such asthose shown at least in FIGS. 1-8 above.

FIG. 9 illustrates aspects of an example environment 900 forimplementing aspects in accordance with various embodiments. As will beappreciated, although a Web-based environment is used for purposes ofexplanation, different environments may be used, as appropriate, toimplement various embodiments. The environment includes an electronicclient device 902, which can include any appropriate device operable tosend and receive requests, messages, or information over an appropriatenetwork 904 and convey information back to a user of the device.Examples of such client devices include personal computers, cell phones,handheld messaging devices, laptop computers, set-top boxes, personaldata assistants, electronic book readers, and the like. The network caninclude any appropriate network, including an intranet, the Internet, acellular network, a local area network or any other such network orcombination thereof. Components used for such a system can depend atleast in part upon the type of network and/or environment selected.Protocols and components for communicating via such a network are wellknown and will not be discussed herein in detail. Communication over thenetwork can be enabled by wired or wireless connections and combinationsthereof. In this example, the network includes the Internet, as theenvironment includes a Web server 906 for receiving requests and servingcontent in response thereto, although for other networks an alternativedevice serving a similar purpose could be used as would be apparent toone of ordinary skill in the art.

The illustrative environment includes at least one application server908 and a data store 910. It should be understood that there can beseveral application servers, layers, or other elements, processes orcomponents, which may be chained or otherwise configured, which caninteract to perform tasks such as obtaining data from an appropriatedata store. As used herein the term “data store” refers to any device orcombination of devices capable of storing, accessing, and/or retrievingdata, which may include any combination and number of data servers,databases, data storage devices and data storage media, in any standard,distributed or clustered environment. The application server can includeany appropriate hardware and software for integrating with the datastore as needed to execute aspects of one or more applications for theclient device, handling a majority of the data access and business logicfor an application. The application server provides access controlservices in cooperation with the data store, and is able to generatecontent such as text, graphics, audio and/or video to be transferred tothe user, which may be served to the user by the Web server in the formof HTML, XML or another appropriate structured language in this example.The handling of all requests and responses, as well as the delivery ofcontent between the client device 902 and the application server 908,can be handled by the Web server. It should be understood that the Weband application servers are not required and are merely examplecomponents, as structured code discussed herein can be executed on anyappropriate device or host machine as discussed elsewhere herein.

The data store 910 can include several separate data tables, databasesor other data storage mechanisms and media for storing data relating toa particular aspect. For example, the data store illustrated includesmechanisms for storing production data 912 and user information 916,which can be used to serve content for the production side. The datastore also is shown to include a mechanism for storing log data 914,which can be used for reporting, analysis, or other such purposes. Itshould be understood that there can be many other aspects that may needto be stored in the data store, such as for page image information andto access right information, which can be stored in any of the abovelisted mechanisms as appropriate or in additional mechanisms in the datastore 910. The data store 910 is operable, through logic associatedtherewith, to receive instructions from the application server 908 andobtain, update or otherwise process data in response thereto. In oneexample, a user might submit a search request for a certain type ofitem. In this case, the data store might access the user information toverify the identity of the user, and can access the catalog detailinformation to obtain information about items of that type. Theinformation then can be returned to the user, such as in a resultslisting on a web page that the user is able to view via a browser on theuser device 902. Information for a particular item of interest can beviewed in a dedicated page or window of the browser.

Each server typically will include an operating system that providesexecutable program instructions for the general administration andoperation of that server, and typically will include a computer-readablestorage medium (e.g., a hard disk, random access memory, read onlymemory, etc.) storing instructions that, when executed by a processor ofthe server, allow the server to perform its intended functions. Suitableimplementations for the operating system and general functionality ofthe servers are known or commercially available, and are readilyimplemented by persons having ordinary skill in the art, particularly inlight of the disclosure herein.

The environment in one embodiment is a distributed computing environmentutilizing several computer systems and components that areinterconnected via communication links, using one or more computernetworks or direct connections. However, it will be appreciated by thoseof ordinary skill in the art that such a system could operate equallywell in a system having fewer or a greater number of components than areillustrated in FIG. 9. Thus, the depiction of the system 900 in FIG. 9should be taken as being illustrative in nature, and not limiting to thescope of the disclosure.

The various embodiments further can be implemented in a wide variety ofoperating environments, which in some cases can include one or more usercomputers, computing devices or processing devices which can be used tooperate any of a number of applications. User or client devices caninclude any of a number of general purpose personal computers, such asdesktop or laptop computers running a standard operating system, as wellas cellular, wireless and handheld devices running mobile software andcapable of supporting a number of networking and messaging protocols.Such a system also can include a number of workstations running any of avariety of commercially-available operating systems and other knownapplications for purposes such as development and database management.These devices also can include other electronic devices, such as dummyterminals, thin-clients, gaming systems and other devices capable ofcommunicating via a network.

Most embodiments utilize at least one network that would be familiar tothose skilled in the art for supporting communications using any of avariety of commercially-available protocols, such as TCP/IP, OSI, FTP,UPnP, NFS, CIFS, and AppleTalk. The network can be, for example, a localarea network, a wide-area network, a virtual private network, theInternet, an intranet, an extranet, a public switched telephone network,an infrared network, a wireless network, and any combination thereof.

In embodiments utilizing a Web server, the Web server can run any of avariety of server or mid-tier applications, including HTTP servers, FTPservers, CGI servers, data servers, Java servers, and businessapplication servers. The server(s) also may be capable of executingprograms or scripts in response requests from user devices, such as byexecuting one or more Web applications that may be implemented as one ormore scripts or programs written in any programming language, such asJava®, C, C# or C++, or any scripting language, such as Perl, Python orTCL, as well as combinations thereof. The server(s) may also includedatabase servers, including without limitation those commerciallyavailable from Oracle®, Microsoft®, Sybase®, and IBM®.

The environment can include a variety of data stores and other memoryand storage media as discussed above. These can reside in a variety oflocations, such as on a storage medium local to (and/or resident in) oneor more of the computers or remote from any or all of the computersacross the network. In a particular set of embodiments, the informationmay reside in a storage-area network (SAN) familiar to those skilled inthe art. Similarly, any necessary files for performing the functionsattributed to the computers, servers or other network devices may bestored locally and/or remotely, as appropriate. Where a system includescomputerized devices, each such device can include hardware elementsthat may be electrically coupled via a bus, the elements including, forexample, at least one central processing unit (CPU), at least one inputdevice (e.g., a mouse, keyboard, controller, touch screen or keypad),and at least one output device (e.g., a display device, printer orspeaker). Such a system may also include one or more storage devices,such as disk drives, optical storage devices, and solid-state storagedevices such as RAM or ROM, as well as removable media devices, memorycards, flash cards, etc.

Such devices also can include a computer-readable storage media reader,a communications device (e.g., a modem, a network card (wireless orwired), an infrared communication device, etc.) and working memory asdescribed above. The computer-readable storage media reader can beconnected with, or configured to receive, a computer-readable storagemedium, representing remote, local, fixed, and/or removable storagedevices as well as storage media for temporarily and/or more permanentlycontaining, storing, transmitting, and retrieving computer-readableinformation. The system and various devices also typically will includea number of software applications, modules, services or other elementslocated within at least one working memory device, including anoperating system and application programs, such as a client applicationor Web browser. It should be appreciated that alternate embodiments mayhave numerous variations from that described above. For example,customized hardware might also be used and/or particular elements mightbe implemented in hardware, software (including portable software, suchas applets) or both. Further, connection to other computing devices suchas network input/output devices may be employed.

Storage media and computer-readable media for containing code, orportions of code, can include any appropriate media known or used in theart, including storage media and communication media, such as but notlimited to volatile and non-volatile, removable and non-removable mediaimplemented in any method or technology for storage and/or transmissionof information such as computer-readable instructions, data structures,program modules or other data, including RAM, ROM, EEPROM, flash memoryor other memory technology, CD-ROM, DVD, or other optical storage,magnetic cassettes, magnetic tape, magnetic disk storage or othermagnetic storage devices or any other medium which can be used to storethe desired information and which can be accessed by the a systemdevice. Based on the disclosure and teachings provided herein, a personof ordinary skill in the art will appreciate other ways and/or methodsto implement the various embodiments.

The specification and drawings are, accordingly, to be regarded in anillustrative rather than a restrictive sense. It will, however, beevident that various modifications and changes may be made thereuntowithout departing from the broader spirit and scope of the invention asset forth in the claims.

Other variations are within the spirit of the present disclosure. Thus,while the disclosed techniques are susceptible to various modificationsand alternative constructions, certain illustrated embodiments thereofare shown in the drawings and have been described above in detail. Itshould be understood, however, that there is no intention to limit theinvention to the specific form or forms disclosed, but on the contrary,the intention is to cover all modifications, alternative constructionsand equivalents falling within the spirit and scope of the invention, asdefined in the appended claims.

The use of the terms “a” and “an” and “the” and similar referents in thecontext of describing the disclosed embodiments (especially in thecontext of the following claims) are to be construed to cover both thesingular and the plural, unless otherwise indicated herein or clearlycontradicted by context. The terms “comprising,” “having,” “including,”and “containing” are to be construed as open-ended terms (i.e., meaning“including, but not limited to,”) unless otherwise noted. The term“connected” is to be construed as partly or wholly contained within,attached to, or joined together, even if there is something intervening.Recitation of ranges of values herein are merely intended to serve as ashorthand method of referring individually to each separate valuefalling within the range, unless otherwise indicated herein, and eachseparate value is incorporated into the specification as if it wereindividually recited herein. All methods described herein can beperformed in any suitable order unless otherwise indicated herein orotherwise clearly contradicted by context. The use of any and allexamples, or exemplary language (e.g., “such as”) provided herein, isintended merely to better illuminate embodiments of the invention anddoes not pose a limitation on the scope of the invention unlessotherwise claimed. No language in the specification should be construedas indicating any non-claimed element as essential to the practice ofthe invention.

Disjunctive language such as that included in the phrase “at least oneof X, Y, or Z,” unless specifically stated otherwise, is otherwiseunderstood within the context as used in general to present that anitem, term, etc., may be either X, Y, or Z, or any combination thereof(e.g., X, Y, and/or Z). Thus, such disjunctive language is not generallyintended to, and should not, imply that certain embodiments require atleast one of X, at least one of Y, or at least one of Z in order foreach to be present.

Preferred embodiments of this disclosure are described herein, includingthe best mode known to the inventors for carrying out the invention.Variations of those preferred embodiments may become apparent to thoseof ordinary skill in the art upon reading the foregoing description. Theinventors expect skilled artisans to employ such variations asappropriate, and the inventors intend for the invention to be practicedotherwise than as specifically described herein. Accordingly, thisinvention includes all modifications and equivalents of the subjectmatter recited in the claims appended hereto as permitted by applicablelaw. Moreover, any combination of the above-described elements in allpossible variations thereof is encompassed by the invention unlessotherwise indicated herein or otherwise clearly contradicted by context.

All references, including publications, patent applications, andpatents, cited herein are hereby incorporated by reference to the sameextent as if each reference were individually and specifically indicatedto be incorporated by reference and were set forth in its entiretyherein.

What is claimed is:
 1. A computer-implemented method, comprising:detecting, by a user device, an application installed on the userdevice; identifying information associated with the application thatidentifies an interactively configured gesture and an operation of theuser device; updating a registry file in memory of the user device toinclude an association between the interactively configured gesture andthe operation, the registry file comprising a data file maintained by anoperating system of the user device, wherein the association may beupdated to replace the interactively configured gesture with a secondinteractively configured gesture upon receiving an update request withan indication of the second interactively configured gesture;configuring the operating system to interact with the application basedat least in part on the association included in the registry file;receiving, by a handler of the operating system, an indication that theinteractively configured gesture has been performed with respect to theuser device; and performing the operation of the user device based atleast in part on the association between the interactively configuredgesture and the operation included in the registry file.
 2. Thecomputer-implemented method of claim 1, wherein storing the associationbetween the gesture and the operation includes at least updating anexisting association between the gesture and a different operation byreplacing the different operation with the operation of the user device.3. The computer-implemented method of claim 1, wherein the operation isa global operation which is performed independent of the applicationassociated with the user device being executed.
 4. Thecomputer-implemented method of claim 1, wherein the operation is anapplication-specific operation.
 5. The computer-implemented method ofclaim 1, wherein updating the stored association comprises: receivingthe update request to update the stored association, the update requestincluding an indication of a second gesture; and updating the storedassociation such that the operation is associated with the secondgesture.
 6. The computer-implemented method of claim 1, wherein updatingthe stored association comprises: receiving the update request to updatethe stored association, the update request including an indication of asecond operation; and updating the stored association such that thesecond operation is associated with the gesture.
 7. Thecomputer-implemented method of claim 1, wherein the operation is anoperation to launch an instance of the application associated with theuser device.
 8. A system, comprising: a memory that storescomputer-executable instructions; and a processor configured to accessthe memory, wherein the processor is configured to execute thecomputer-executable instructions to collectively at least: detect, by aclient device, an application installed on the client device; submit, bythe client device, a request for information related to the application;receive, by the client device, the information related to theapplication that includes one or more default gestures and one or moreoperations, at least one of the one or more operations being associatedwith at least one default gesture; store an association between the atleast one of the one or more operations and the at least one defaultgesture in a registry file, the registry file comprising a data filemaintained by an operating system of the client device; update, inresponse to receiving update information, the registry file to associatea dynamically configured gesture with a specified operation, thedynamically configured gesture replacing a default gesture; and execute,by the client device, the specified operation when an operating systemhandler detects that the dynamically configured gesture associated withthe specified operation is performed.
 9. The system of claim 8, whereinthe configured gesture is detectable via a screen of the client device.10. The system of claim 8, wherein associations of the registry file arefurther updated when new configuration information is received.
 11. Thesystem of claim 10, wherein the registry file of the client device isupdated by replacing the configured gesture with a second configuredgesture performed with the client device.
 12. The system of claim 10,wherein the registry file of the client device is updated by replacingthe specified operation with a second specified operation, such that thesecond specified operation is executed when the configured gestureassociated with the specified operation is performed.
 13. The system ofclaim 8, wherein the specified operation includes at least one ofopening a global help file of the client device or launching theapplication on the client device.
 14. The system of claim 8, wherein theregistry file is updated by executable instructions provided to anoperating system of the client device.
 15. The system of claim 8,wherein at least one association of the registry file is not able to befurther updated.
 16. One or more computer-readable media storingcomputer-executable instructions for managing screen input informationthat, when executed by one or more computer systems, configure the oneor more computer systems to perform operations comprising: detecting anapplication installed on a device; submitting a request for informationrelated to the application; receiving, in relation to the applicationinstalled on the device, information indicating an interactivelyconfigured performable gesture associated with an executable operation;storing the received information as gesture data; receiving a request todynamically update the gesture data including an indication of theexecutable operation and information associated with input detected bythe device; determining, based at least in part on the received input, asecond interactively configured performable gesture; updating thegesture data to associate the second interactively configuredperformable gesture with the executable operation; and executing theexecutable operation based at least in part on receiving inputinformation indicating that the second interactively configuredperformable gesture has been performed.
 17. The one or morecomputer-readable media of claim 16, wherein the gesture data mayfurther be updated to associate the performable gesture with a secondexecutable operation.
 18. The one or more computer-readable media ofclaim 16, wherein the executable operation includes at least one oflaunching the application installed on the device, opening a document ofthe device, or establishing a connection between the device and anothercomputing system.
 19. The one or more computer-readable media of claim16, wherein the executable operation includes at least providing anapplication-specific instruction to the application installed on thedevice.
 20. The one or more computer-readable media of claim 19, whereinthe executable operation is performed if the application installed onthe device is being executed by the device.